//
// Created by jyh on 2021/8/5.
//

#include "Taiutc.h"
#include "Com.h"

struct Taiutc taiutc;
void Taiutc_m_rdUtcFile(){
    char* line;
    FILE* in;
    int i=0,jd,leap;

    // gnss.cfg part
    // if((in=fopen("./leap.sec","r"))==NULL){
    //     printf("***ERROR(readCommFil):file_table not exist leapsc item ");
    //     exit(1);
    // }
//    if((in=fopen("./leap.sec","r"))==NULL){
//        printf("***ERROR(readCommFil):file_table not exist leapsc item ");
//        exit(1);
//    }
//    memset(taiutc.ls,0,sizeof(int)*20);
//    memset(taiutc.jdt,0,sizeof(int)*20);
//
//    line=calloc(LEN_STRING+1,sizeof(char));
//    while(fgets(line,LEN_STRING,in)){
//        if(strstr(line,"+leap sec"))
//            break;
//    }
//    while(fgets(line,LEN_STRING,in)){
//        if(strstr(line,"-leap sec"))
//            break;
//        sscanf(line,"%d%d",&jd,&leap);
//        taiutc.ls[i]=leap;
//        taiutc.jdt[i]=jd;
//        i++;
//    }
//    taiutc.size=i;
//    free(line);
//    fclose(in);
     for (i=0;i<18;i++){
         taiutc.ls[i]=i+21;
     }
     taiutc.jdt[0]=45150;
     taiutc.jdt[1]=45515;
     taiutc.jdt[2]=46246;
     taiutc.jdt[3]=47160;
     taiutc.jdt[4]=47891;
     taiutc.jdt[5]=48256;
     taiutc.jdt[6]=48803;
     taiutc.jdt[7]=49168;
     taiutc.jdt[8]=49533;
     taiutc.jdt[9]=50082;
     taiutc.jdt[10]=50629;
     taiutc.jdt[11]=51178;
     taiutc.jdt[12]=53735;
     taiutc.jdt[13]=54831;
     taiutc.jdt[14]=56108;
     taiutc.jdt[15]=57204;
     taiutc.jdt[16]=57754;
     taiutc.jdt[17]=99999;
     taiutc.size=18;
}
int Taiutc_m_getTaiutc(int mjd){
    int i;

    Taiutc_m_rdUtcFile();
    if(taiutc.size != 0){
        if(mjd < taiutc.jdt[0]){
            printf("mjd = %d,mjde = %d,epoch before table start",mjd,taiutc.jdt[0]); // incase of loop
            exit(1);
        }
        if(mjd > taiutc.jdt[taiutc.size - 1]){
            printf("mjd = %d,mjde = %d,epoch after table start",mjd,taiutc.jdt[taiutc.size - 1]);
            exit(1);
        }
    }
    for(i = 0; i < taiutc.size - 1;i++)
        if(mjd > taiutc.jdt[i] && mjd < taiutc.jdt[i +1])
            return taiutc.ls[i];
    return 0;
}
